#!/bin/sh -vx

# Copyright (C) 2018 John Collins (jcc8 at psu dot edu)
# You may freely use, modify and/or distribute this file.

# Prevent errors from sed if it encounters non-UTF-8 strings in utf-8 locale
LC_ALL=C; export LC_ALL;  LANGUAGE=C; export LANGUAGE

# Notes about interpretation of tests:
# The test file was generated in the compilation of axodraw2's manual,
# and this test script therefore verifies much functionality of
# axohelp.  However, if the test fails, it may not actually indicate
# an error.  There are two possibilities for spurious failure:
# a. There is a mismatch of line endings (\n v. \r\n, etc) between the
#    generated test file test-big.ax2 and the reference file
#    test-big.ax2-std.  Correct the problem by adjusting
#    test-big.ax2-std accordingly.
# b. Some of the numbers in the output file are generated by complex
#    floating point computations.  Rounding errors can generate small
#    differences between the generated file and the reference file.
#    This results, for example, from a 32-bit executable compared with
#    a 64-bit executable, or from a compilation with different
#    compilers and the associated libraries (e.g., VisualStudio
#    compared with gcc).
# Interpret the results of the test accordingly.

if test -z "$test_srcdir"; then
  # If not set, then we are not running from `make check'.
  test_srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'`  # == dirname $0
  test "$test_srcdir" = "$0" && test_srcdir=.       # in case subst failed
fi

test "$test_srcdir" = . \
    || cp "$test_srcdir"/test-big.ax1 "$test_srcdir"/test-big.ax2-std . \
    || exit 1

echo Running axohelp on test document ...
./axohelp test-big \
    || { echo axohelp failed to run correctly ; exit 1; }

echo Checking result file test.ax2, after converting line-endings ...
tr -d '\r' < test-big.ax2 > tmp.ax2
tr -d '\r' < test-big.ax2-std > tmp.ax2-std
diff tmp.ax2-std tmp.ax2 \
    || { echo The .ax2 file created by axohelp was incorrect; exit 1; }

echo Success, so I will remove generated file test.ax2
rm test-big.ax2 tmp.ax2 tmp.ax2-std
